﻿#region The MIT License (MIT)
// The MIT License (MIT)
// Copyright (c) 2010 - 2013 Sovacode LLC
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all copies or substantial portions
// of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
// BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
#endregion

namespace Sovacode.RubiksCube.Common.Text
{
    /// <summary>
    /// Class to store messages by specific category
    /// </summary>
    internal static class CategorizedBy
    {
        /// <summary>
        /// Common Basic Messages
        /// </summary>
        internal static class Basic
        {
            /// <summary>
            /// Default Name for objects without name
            /// </summary>
            internal const string NoNameDataObject = "no name";
        }

        /// <summary>
        /// System Commands names
        /// </summary>
        internal static class SystemCommands
        {
            /// <summary>
            /// Refresh command name
            /// </summary>
            internal const string RefreshCommand = "Refresh";
            /// <summary>
            /// Update Commands command name
            /// </summary>
            internal const string UpdateCommandsCommand = "Update";
            /// <summary>
            /// Save Settings command name
            /// </summary>
            internal const string SaveSettingsCommand = "SaveSettings";
            /// <summary>
            /// Load Settings command name
            /// </summary>
            internal const string LoadSettingsCommand = "LoadSettings";
            /// <summary>
            /// Show Settings command name
            /// </summary>
            internal const string ShowSettingshCommand = "ShowSettings";
            /// <summary>
            /// Show Invalid Commands command name
            /// </summary>
            internal const string ShowInvalidCommandsCommand = "ShowInvalidCommands";
            /// <summary>
            /// Show Invalid Settings command name
            /// </summary>
            internal const string ShowInvalidSettingsCommand = "ShowInvalidSettings";
            /// <summary>
            /// Show Invalid Validators command name
            /// </summary>
            internal const string ShowInvalidValidatorsCommand = "ShowInvalidValidators";
            /// <summary>
            /// Quick export commands to XML
            /// </summary>
            internal const string QuickExportCommandsToXml = "QuickExportCommandsToXml";
            /// <summary>
            /// Exports the commands to specific XML
            /// </summary>
            internal const string ExportCommandsToXml = "ExportCommandsToXml";

        }

        /// <summary>
        /// Command Manager Messages
        /// </summary>
        internal static class CommandManagerMessages
        {
            /// <summary>
            /// No any invalid commands message
            /// </summary>
            internal const string SuccessMessage = "No any invalid commands";
            /// <summary>
            /// Invalid commands message
            /// </summary>
            internal const string FailedMessage = "Invalid command(s):";

            /// <summary>
            /// Command has a duplicate message
            /// </summary>
            internal const string DuplicateCommandNameMessage = "Command '{0}' already registered";
            /// <summary>
            /// Command not found message
            /// </summary>
            internal const string FailedCommandMessage = "Command '{0}' can not be found";
            /// <summary>
            /// Command is empty message
            /// </summary>
            internal const string CommandIsEmptyMessage = "Command '{0}' is empty";
        }

        /// <summary>
        /// Validation Manager Messages
        /// </summary>
        internal static class ValidationManagerMessages
        {
            /// <summary>
            /// No any invalid validators
            /// </summary>
            internal const string SuccessMessage = "No any invalid validators";
            /// <summary>
            /// Invalid validators message
            /// </summary>
            internal const string FailedMessage = "Invalid validator(s):";

            /// <summary>
            /// Validator has a duplicate message
            /// </summary>
            internal const string DuplicateValidator = "Validator for property '{0}' already registered";
            /// <summary>
            /// Validator is empty message
            /// </summary>
            internal const string ValidatorIsEmptyMessage = "Validator for property '{0}' is empty";
            /// <summary>
            /// Validator not found message
            /// </summary>
            internal const string FailedVlidatorMessage = "Can not found validator for property '{0}'";
            /// <summary>
            /// The property is invalid standard message if there no any alias for this message
            /// </summary>
            internal const string InvalidPropertyMessage = "Property '{0}' is invalid";
        }

        /// <summary>
        /// Settings Manager Messages
        /// </summary>
        internal static class SettingsManager
        {
            /// <summary>
            /// No any invalid settings
            /// </summary>
            internal const string SuccessMessage = "No any invalid settings";
            /// <summary>
            /// Invalid settings message
            /// </summary>
            internal const string FailedMessage = "Invalid setting(s):";

            /// <summary>
            /// There no any associated window for showing settings message
            /// </summary>
            internal const string NoSettingsDialogMessage = "No any associated dialog for display settings";
            /// <summary>
            /// Exception while reading property message
            /// </summary>
            internal const string CastErrorMessage = "The setting '{0}' could not be found or can't be cast to '{1}'\r\nException Message:\r\n{2}";
        }

        /// <summary>
        /// Window Service Messages
        /// </summary>
        internal static class WindowServiceMessages
        {
            /// <summary>
            /// Window service is empty message
            /// </summary>
            internal const string FailedMessage = "Window Service is empty\r\n{0}";
        }

        /// <summary>
        /// Common Exceptions Messages
        /// </summary>
        internal static class ExceptionsMessages
        {
            /// <summary>
            /// Nulls not allowed exception message
            /// </summary>
            internal const string NullsNotAllowedMessage = "Nulls not allowed";
            /// <summary>
            /// Read only exception message
            /// </summary>
            internal const string ReadOnlyObjectMessage = "Object '{0}' is read only";
            /// <summary>
            /// Expression is null message
            /// </summary>
            internal const string ExpressionIsNullMessage = "Expression is null";
        }

        /// <summary>
        /// Window Titles
        /// </summary>
        internal static class WindowTitles
        {
            /// <summary>
            /// Title of Information window
            /// </summary>
            internal const string MessageWindowTitle = "Information";
            /// <summary>
            /// Title of Error window
            /// </summary>
            internal const string ErrorWindowTitle = "Error";
            /// <summary>
            /// Title of Warning window
            /// </summary>
            internal const string WarningWindowTitle = "Warning";
        }

        /// <summary>
        /// Trace Messages
        /// </summary>
        internal static class TraceMessages
        {
            /// <summary>
            /// Trace message of registering new command
            /// </summary>
            internal const string RegisterNewCommandTrace = "Registering '{0}' new command...";
        }

        /// <summary>
        /// System Settings names
        /// </summary>
        internal static class SystemSettings
        {
            /// <summary>
            /// Connection Strings setting name
            /// </summary>
            internal const string ConnectionStringsSetting = "ConnectionStrings";
        }
    }
}